In NAND flash memory which is one type of semiconductor memory device, data is programmed by changing the threshold of a memory cell transistor by storing a charge in a charge storage layer. On the other hand, the data that is programmed is read by applying a prescribed potential to the control electrode of the memory cell transistor and determining whether the memory cell transistor is in an ON state that allows a current to flow or is in an OFF state that does not allow the current to flow.
However, as the shrink of NAND flash memory progresses, the distance between the charge storage layers of mutually-adjacent memory cell transistors becomes short; adjacent cell coupling occurs; and the precision when reading the data decreases. On the other hand, a faster read-out operation is necessary in NAND flash memory.